๐ 1. Introduzione alle Operazioni Binarie
Le operazioni in binario sono fondamentali nell'informatica perchรฉ rappresentano ciรฒ che realmente avviene all'interno dei processori. Ogni operazione che eseguiamo sui computer viene tradotta in operazioni binarie a livello hardware.
- Comprendere come funzionano realmente i computer
- Ottimizzare il codice e capire la performance
- Debugging a basso livello
- Manipolazione di bit (maschere, flags, permessi)
- Crittografia e sicurezza
- Grafica e compressione dati
๐ Tipi di operazioni che studieremo
| Categoria | Operazioni | Complessitร |
|---|---|---|
| Aritmetiche Base | Addizione, Sottrazione, Moltiplicazione, Divisione | โญ Facile |
| Numeri Negativi | Complemento a 1, Complemento a 2 | โญโญ Media |
| Operazioni Logiche | AND, OR, XOR, NOT | โญโญ Media |
| Shift e Rotazioni | Shift logico, Shift aritmetico, Rotazioni | โญโญโญ Avanzata |
โ 2. Addizione Binaria
L'addizione in binario segue le stesse regole dell'addizione decimale, ma รจ molto piรน semplice perchรฉ abbiamo solo due cifre (0 e 1).
๐ Regole dell'addizione binaria
| A | B | Somma | Riporto |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
Regola chiave: 1 + 1 = 10โ (cioรจ 0 con riporto di 1)
๐ฏ Esempio passo-passo
Esempio: Addizione di 1011โ + 1101โ
Quando si lavora con un numero fisso di bit, puรฒ verificarsi un overflow se il risultato รจ troppo grande per essere rappresentato.
๐ข Altri esempi
โ 3. Sottrazione Binaria
La sottrazione binaria puรฒ essere eseguita in due modi: direttamente (con prestito) o usando il complemento a 2 (trasformandola in addizione).
๐ Metodo 1: Sottrazione diretta
| A | B | A - B | Prestito |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 (prendo in prestito) |
Regola chiave: 0 - 1 richiede un prestito dalla cifra successiva
Esempio: Sottrazione di 1101โ - 1011โ
๐ Metodo 2: Complemento a 2 (preferito)
Il complemento a 2 รจ il metodo standard usato dai computer per rappresentare i numeri negativi e semplificare la sottrazione.
- Semplifica l'hardware: serve solo un circuito sommatore
- Non esistono problemi con lo zero (+0 e -0 sono uguali)
- Range simmetrico di valori rappresentabili
- Operazioni piรน veloci
๐ 4. Complemento a 1 e Complemento a 2
๐ Complemento a 1
Il complemento a 1 si ottiene invertendo tutti i bit (0โ1, 1โ0).
๐ Complemento a 2
Il complemento a 2 si ottiene calcolando il complemento a 1 e poi aggiungendo 1.
Esempio: Calcolare il complemento a 2 di 00101101โ
๐ฏ Rappresentazione di numeri negativi
In un sistema a complemento a 2, il bit piรน significativo (MSB, il bit piรน a sinistra) indica il segno:
- MSB = 0 โ Numero positivo
- MSB = 1 โ Numero negativo
๐ Range di valori con complemento a 2
| Bit | Range | Esempio valori |
|---|---|---|
| 4 bit | da -8 a +7 | 1000โ = -8, 0111โ = +7 |
| 8 bit | da -128 a +127 | 10000000โ = -128, 01111111โ = +127 |
| 16 bit | da -32768 a +32767 | 1000000000000000โ = -32768 |
| 32 bit | da -2ยณยน a +2ยณยน-1 | Circa ยฑ2.1 miliardi |
๐ฏ Sottrazione usando il complemento a 2
Esempio: Calcolare 12โโ - 5โโ = 7โโ usando 8 bit
L'overflow si verifica quando:
- Due numeri positivi danno un risultato negativo
- Due numeri negativi danno un risultato positivo
โ๏ธ 5. Moltiplicazione Binaria
La moltiplicazione binaria รจ simile alla moltiplicazione decimale, ma molto piรน semplice perchรฉ ogni passo รจ o 0 (se moltiplichi per 0) o uguale al numero stesso (se moltiplichi per 1).
๐ Regole della moltiplicazione binaria
| ร | 0 | 1 |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 1 |
Esempio: Moltiplicazione di 1011โ ร 101โ
๐ฏ Algoritmo passo-passo
- Scrivi i due numeri da moltiplicare
- Per ogni bit del moltiplicatore (dal basso):
- Se il bit รจ 1: scrivi il moltiplicando
- Se il bit รจ 0: scrivi tutti zeri
- Ogni riga successiva รจ spostata di una posizione a sinistra
- Somma tutte le righe
Altro esempio: 110โ ร 11โ
Moltiplicare per una potenza di 2 รจ semplicissimo: basta fare uno shift a sinistra!
โ 6. Divisione Binaria
La divisione binaria segue lo stesso algoritmo della divisione decimale "in colonna", ma รจ piรน semplice perchรฉ ci si chiede solo se il divisore "ci sta" o "non ci sta".
Esempio: Divisione di 1101โ รท 11โ
Esempio corretto: 1110โ รท 11โ
Dividere per una potenza di 2 รจ facile: basta fare uno shift a destra!
๐ฃ 7. Operatori Logici (Bitwise)
Gli operatori logici (o bitwise) operano su ogni singolo bit indipendentemente. Sono fondamentali nella programmazione per manipolare flag, permessi, maschere e ottimizzazioni.
๐ท Operatore AND (&)
| A | B | A AND B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
๐ถ Operatore OR (|)
| A | B | A OR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
๐ธ Operatore XOR (^)
| A | B | A XOR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
- A ^ A = 0 (un numero XOR se stesso = 0)
- A ^ 0 = A (un numero XOR 0 = se stesso)
- A ^ B ^ B = A (proprietร di cancellazione)
- XOR รจ commutativo: A ^ B = B ^ A
๐น Operatore NOT (~)
| A | NOT A |
|---|---|
| 0 | 1 |
| 1 | 0 |
๐ฏ Applicazioni pratiche degli operatori logici
Esempio 1: Verificare se il bit N รจ impostato
Esempio 2: Impostare il bit N a 1
Esempio 3: Azzerare il bit N
Esempio 4: Toggle (invertire) il bit N
โ๏ธ 8. Operazioni di Shift e Rotazione
Le operazioni di shift (spostamento) sono fondamentali per moltiplicare/dividere velocemente per potenze di 2 e manipolare dati.
โ๏ธ Shift Logico a Sinistra (Left Shift)
Sposta tutti i bit a sinistra, riempiendo con 0 a destra. Equivale a moltiplicare per 2.
I bit che "escono" a sinistra vengono persi! Questo puรฒ causare risultati inaspettati.
โถ๏ธ Shift Logico a Destra (Right Shift)
Sposta tutti i bit a destra, riempiendo con 0 a sinistra. Equivale a dividere per 2 (troncando).
๐ฝ Shift Aritmetico a Destra
Come lo shift logico, ma mantiene il bit di segno (copia il MSB). Usato per dividere numeri con segno mantenendo il segno corretto.
๐ Rotazioni (Rotate)
Nelle rotazioni, i bit che "escono" da un lato rientrano dall'altro. Nessun bit viene perso!
| Operazione | Bit persi? | Riempimento | Uso |
|---|---|---|---|
| Shift Logico | Sรฌ | Con 0 | Moltiplicazione/divisione per 2โฟ |
| Shift Aritmetico | Sรฌ | Con bit di segno | Divisione numeri con segno |
| Rotazione | No | Con bit che escono | Crittografia, hashing |
๐งฎ 9. Calcolatore Binario Interattivo
Usa questo strumento per esercitarti con tutte le operazioni binarie!
๐ข Calcolatore Operazioni Binarie
๐ฏ Operazioni Unarie
Operazioni su un solo numero
๐ 10. Esercizi Pratici
๐ฒ Generatore di Esercizi
๐ฏ 11. Trucchi e Ottimizzazioni
โ ๏ธ 12. Errori Comuni da Evitare
Problema: Sommare senza considerare il numero di bit disponibili
Soluzione: Controlla sempre se il risultato "ci sta" nel numero di bit che hai
Problema: Usare shift logico su numeri con segno
Soluzione: Per numeri negativi usa shift aritmetico per mantenere il segno
Problema: Non sfruttare A ^ B ^ B = A
Soluzione: Usa questa proprietร per cifratura semplice e ottimizzazioni
Problema: In molti linguaggi, & e | hanno precedenza bassa
Soluzione: Usa sempre le parentesi: if ((x & mask) != 0)
Problema: Confrontare numeri con lunghezze diverse
Soluzione: Estendi con zeri a sinistra per allineare
โ 13. Checklist di Autovalutazione
- โ Eseguire addizioni binarie con riporto
- โ Eseguire sottrazioni binarie con prestito
- โ Calcolare il complemento a 1 e il complemento a 2
- โ Rappresentare numeri negativi in complemento a 2
- โ Riconoscere e gestire l'overflow
- โ Moltiplicare numeri binari
- โ Dividere numeri binari
- โ Usare AND, OR, XOR, NOT correttamente
- โ Distinguere shift logico e shift aritmetico
- โ Capire la differenza tra shift e rotazione
- โ Applicare operatori bitwise per mascherare bit
- โ Riconoscere quando usare shift invece di moltiplicazione/divisione
- โ Usare i trucchi per verificare potenze di 2
- โ Contare i bit a 1 in un numero
๐ Conclusione
Congratulazioni! Hai completato questa guida completa sulle operazioni binarie. Ora conosci le basi dell'aritmetica che i processori eseguono milioni di volte al secondo!
Usa il calcolatore interattivo per esercitarti regolarmente. La pratica รจ fondamentale per padroneggiare queste operazioni! ๐ช
"Ci sono 10 tipi di persone al mondo: quelli che capiscono il binario e quelli che non lo capiscono." ๐